home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / ver / 014 / funcenem / zakob.c < prev   
C/C++ Source or Header  |  2000-07-07  |  2KB  |  85 lines

  1. /* zakob.c */
  2.  
  3. #include <xsp2lib.h>
  4.  
  5. #include "../main.h"
  6. #include "../player.h"
  7. #include "../enemy.h"
  8. #include "../eshot.h"
  9. #include "../effect.h"
  10. #include "../psearch.h"
  11.  
  12.  
  13. /* 関数プロトタイプ宣言 */
  14. static short EnemyMoveZakoA (ENEMY *);
  15. static void EnemyFreeZakoA (ENEMY *);
  16.  
  17.  
  18. /* 初期化ルーチン */
  19. void EnemyAllocZakoA (ENEMY * p)
  20. {
  21.     p->pt = obj_zako02 + 15;
  22.     p->info = 0x0700 | PRIORITY_ZAKO;    /* 数値を決めうちして入れるのはよくない */
  23.     p->hit_sx = 12;        /* 自機ショットに対する当たり判定 */
  24.     p->hit_sy = 12;
  25.     p->hp = 1;        /* 耐久力 */
  26.     p->damage = 0;
  27.     p->func_enemy_move = EnemyMoveZakoA;
  28.     p->func_enemy_free = EnemyFreeZakoA;
  29.  
  30.     /* コア関連 */
  31.     p->core_info = PALET_CORE_BLUE | PRIORITY_ZAKO;
  32.     p->core_pt = sp_core + 1;
  33. }
  34.  
  35.  
  36. /* 移動ルーチン */
  37. /* 返り値:非0なら消去 */
  38. static short EnemyMoveZakoA (ENEMY * p)
  39. {
  40.     /* 敵をくるくる回すアニメーション */
  41.     p->pt--;
  42.     if (p->pt < obj_zako02)
  43.         p->pt = obj_zako02 + 15;
  44.  
  45.     /* X座標を自機に近づける */
  46.     if (p->lx > player->lx)
  47.         p->lx -= 32768;
  48.     else
  49.         p->lx += 32768;
  50.  
  51.     p->ly += 2 * 65536;
  52.  
  53.     /* 上位ワード(固定整数部)だけ取り出す */
  54.     p->x = p->lx >> 16;
  55.     p->y = p->ly >> 16;
  56.  
  57.     if (p->y > 256 + 32)
  58.         return (-1);    /* Y座標が 256+32 以上なら消去 */
  59.  
  60.     /* もし前回ダメージを受けたなら */
  61.     if (p->damage) {
  62.         p->hp -= p->damage;
  63.         p->damage = 0;
  64.         /* 耐久力が0以下なら消去 */
  65.         if (p->hp <= 0) {
  66.             EffectAlloc (EFFECT_EXPLZAKO, 0, p->x, p->y);    /* 爆発パターンを出現させる */
  67.             return (-1);
  68.         }
  69.     }
  70.     xobj_set_st (p);    /* 表示 */
  71.  
  72.     /* コアの表示 */
  73.     p->core_x = p->x - 8;
  74.     p->core_y = p->y - 8;
  75.     xsp_set_st (&(p->core_x));
  76.  
  77.     return (0);
  78. }
  79.  
  80.  
  81. /* 消去ルーチン */
  82. static void EnemyFreeZakoA (ENEMY * p)
  83. {
  84. }
  85.